/**
 * json数据提取
 * @param obj json|null 源数据 null:忽略
 * @param mix string|array|json 提取规则
 * 		string: obj的KEY前缀, 提取/排除
 * 		array: 提取/排除的字段列表
 * 		json: 提取为 {k:v} => {k:obj[v]}
 * @param exc boolean [前缀]是否排除!json
 * @return json 前缀提取时->返回移除前缀
 */
$.mpk = function(obj, mix, exc=false){
	let rtn={}; if(!obj) return rtn;
	if(Array.isArray(mix)){
		if(!exc) for(let k of mix) rtn[k]=obj[k];
		else{
			for(let [k,v] of Object.entries(obj))
				if(!mix.includes(k)) rtn[k] = v;
		}
		return rtn;
	}
	if(typeof mix==='object'){
		let B=k=>rtn[k]=obj[mix[k]];
		Object.keys(mix).forEach(B);
		return rtn;
	}
	let N=(mix+'').length, H=!exc;
	Object.keys(obj).forEach(k=>{
		let p = (k+='').slice(0,N);
		if((p===mix)!==H) return;
		rtn[H?k.slice(N):k]=obj[k];
	});
	return rtn;
};
